package com.dly.blog.domain;

import com.dly.blog.enums.OpType;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import lombok.experimental.SuperBuilder;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;

import java.time.LocalDateTime;

/**
 * @Author: DaiLiYu
 * @Date: 2023/7/17 10:48
 */

@Data
@SuperBuilder
@Accessors(chain = true)
@AllArgsConstructor
@NoArgsConstructor
@Document(collection = "op_log")
public class OpLogEntity {

    @Id
    private String id;

    /**
     * 方法描述
     */
    private String description;

    /**
     * 请求的ip地址
     */
    private String requestIp;

    /**
     * 日志类型
     */
    private OpType type;

    /**
     * 操作类路径
     */
    private String classPath;

    /**
     * 请求方法
     */
    private String actionMethod;

    /**
     * 请求方法类型
     */
    private String httpMethod;

    /**
     * 请求路径
     */
    private String requestUri;

    /**
     * 日志注解描述
     */
    private String logDescription;

    /**
     * 参数
     */
    private String params;

    /**
     * 返回结果
     */
    private String result;

    /**
     * 异常描述
     */
    private String exceptionDetails;

    /**
     * 消耗时间
     */
    private Long consumingTime;

    /**
     * 开始时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone="GMT+8")
    private LocalDateTime startTime;

    /**
     * 完成时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime finishTime;

    /**
     * 操作人
     */
    private String createUser;

    /**
     * 操作人
     */
    private String userName;
}
